css: Allow transitioning between different units again
authorMatthias Clasen <mclasen@redhat.com>
Sun, 19 Apr 2020 01:10:32 +0000 (21:10 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 19 Apr 2020 01:10:32 +0000 (21:10 -0400)
This turns out to be necessary for transitioning filters,
and we run into criticals if transitioning numbers
unexpectedly returns NULL. I've observed that with

* {
  filter: invert(80%);
}

This was broken in c9e972eecb3a78ea.

gtk/gtkcssdimensionvalue.c

index 7c918d6da1f8b2909fe139e7badf22a2ca54d96b..10effe22d7765e5bae14ae29fce60ccfe22f4fd2 100644 (file)
@@ -248,10 +248,10 @@ gtk_css_value_dimension_transition (GtkCssValue *start,
                                     guint        property_id,
                                     double       progress)
 {
-  if (start->unit != end->unit)
-    return NULL;
+  if (start->unit == end->unit)
+    return gtk_css_dimension_value_new (start->value + (end->value - start->value) * progress, start->unit);
 
-  return gtk_css_dimension_value_new (start->value + (end->value - start->value) * progress, start->unit);
+  return gtk_css_number_value_transition (start, end, property_id, progress);
 }
 
 static const GtkCssNumberValueClass GTK_CSS_VALUE_DIMENSION = {